#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "commtraff_tool_com.h"

void PrintLine(int num)
{
    for (int i = 0; i < num; i++) {
        printf("-");
    }
}

void PrintTooLName(const char* toolName)
{
    int nameLen = strlen(toolName);              // 计算工具名称长度
    int dashCount = (TOOL_LIST_WIDTH - nameLen - 2) / 2; // 计算左右 `-` 的数量（减去空格）
    // 打印左侧 `-`
    PrintLine(dashCount);
    // 打印 `toolName`
    printf(" %s ", toolName);
    // 打印右侧 `-`
    PrintLine(dashCount);
    // 补偿右侧 `-` 数量（处理奇数对齐问题）
    if ((TOOL_LIST_WIDTH - nameLen - 2) % 2 != 0) {
        printf("-");
    }
    printf("\n");
}

// 安全读取整数输入，使用 strtol 替代 sscanf
// 由于 min 总是等于 0，直接硬编码
int SafeReadInt(int max) {
    const int min = 0;
    char input[128];
    char *endptr;
    long value;
    while (1) {
        if (fgets(input, sizeof(input), stdin) == NULL) {
            printf("Error reading input. Please try again.\n");
            continue;
        }
        value = strtol(input, &endptr, 10);
        if (*endptr == '\n' || *endptr == '\0') {
            if (value >= min && value <= max) {
                return (int)value;
            }
        }
        printf("Invalid input! Please enter a number between %d and %d.\n", min, max);
    }
}

// 安全读取长整数输入
long SafeReadLong(long max) {
    const long min = 0;
    char input[128];
    char *endptr;
    long value;
    while (1) {
        if (fgets(input, sizeof(input), stdin) == NULL) {
            printf("Error reading input. Please try again.\n");
            continue;
        }
        value = strtol(input, &endptr, 10);
        if (*endptr == '\n' || *endptr == '\0') {
            if (value >= min && value <= max) {
                return value;
            }
        }
        printf("Invalid input! Please enter a number between %ld and %ld.\n", min, max);
    }
}
